package upc.edu.business;

import java.util.ArrayList;

import upc.edu.bean.Tarea;
import upc.edu.bean.Usuario;

public class AdmTarea {

    private ArrayList<Tarea> tareas;

    public AdmTarea() {
        tareas = new ArrayList<Tarea>();
    }

    //Hago click en [Adicionar]
    //Ã¢â‚¬Â¢ Crear una nueva Tarea General
    public String registrarTarea(int idTarea, String asunto, String fecVen,
            String responsable, String comentario, String fecCrea, int userCrea,
            String fecActualiza, int userActualiza) {
    	
    	String Mensaje="";
    	if(asunto.equalsIgnoreCase("") || fecVen.equalsIgnoreCase("") || responsable.equalsIgnoreCase("")){
    		Mensaje="Error: Ingrese Datos Correctos";    		
    	}else{

            //creo una instancia a mi clase Tarea pasandole los datos a registrar
            Tarea regTarea = new Tarea(idTarea, asunto, fecVen,
                    responsable, comentario, fecCrea, userCrea,
                    fecActualiza, userActualiza);
            //Agrego los datos de mi instancia con datos al ArrayList
            tareas.add(regTarea);
            Mensaje="Registrado Correctamente"; 
    	}
    	return Mensaje;
    }

    //Hago click  en [Buscar]
    //Ã¢â‚¬Â¢ Ver  una ventana  de busqueda que permita  localizar las Tareas Generales
    public Tarea buscarTarea(int idTarea) {
        //recorreo mi ArrayList
        for (Tarea tareaa : tareas) //evaluo si encuentro el registro de busqueda
        {
            if (tareaa.getIdTarea() == idTarea) //retorno la instancia a mi clase tarea
            {
                return tareaa;
            }
        }
        return null;
    }
    
    public Boolean buscarTareas(int idTarea) {
        for (Tarea tareaa : tareas) 
        {
            if (tareaa.getIdTarea() == idTarea)
            {
                return true;
            }
        }
        return false;
    }

    //Hago click  en [Editar]
    //Ã¢â‚¬Â¢ Ver la  pantalla en  modo  ediciÃƒÂ³n y  actualizar  la informaciÃƒÂ³n,
    //  siempre que  la  tarea no  haya sido asignada  aÃƒÂºn.
    public String modificaTarea(Tarea t) {
        String Mensaje = "";
        try {
            for (Tarea tareaa : tareas) {
                if (tareaa.getIdTarea() == t.getIdTarea()) {
                    if (tareaa.getEstado().equalsIgnoreCase("Confirmado")) {
                        //Mensaje = "Tarea Asignada a Usuario. No puede realizar Modificacion sobre Tareas Asignadas";
                    	  Mensaje="NO";
                    } else {
                        tareaa.setAsunto(t.getAsunto());
                        tareaa.setFecVen(t.getFecVen());
                        tareaa.setResponsable(t.getResponsable());
                        tareaa.setComentario(t.getComentario());
                        tareaa.setFecCrea(t.getFecCrea());
                        tareaa.setUserCrea(t.getUserCrea());
                        tareaa.setFecActualiza(t.getFecActualiza());
                        tareaa.setUserActualiza(t.getUserActualiza());
                        tareaa = t;
                        //Mensaje = "Se modifico la tarea Correctamente";
                        Mensaje="SI";
                    }
                }
            }
        } catch (Exception ex) {
            Mensaje = "Error: " + ex.getMessage();
        }
        return Mensaje;
    }

    //Hago  click en [Eliminar]
    //Ã¢â‚¬Â¢ Eliminar la tarea actual
    public Boolean eliminarTarea(int idTarea) {
        //Llamo al metodo de busqueda pasandole mi instancia
        Tarea tareaa = buscarTarea(idTarea);
        //si lo encuentre lo elimina
        if (tareaa != null) {
            tareas.remove(tareaa);
            return true;
        }
        return false;
    }

    //Hago click en[Adicionar] en la secciÃƒÂ³n Notificara lo siguientes usuarios
    //Ã¢â‚¬Â¢ Ver una ventana de  selecciÃƒÂ³n de Usuarios
    public void agregaUsuarioNotificacion(int idTarea, Usuario usuario) {
        for (Tarea tareaa : tareas) {
            if (tareaa.getIdTarea() == idTarea) {
                tareaa.getNotificacion().add(usuario);
            }
        }
    }

    //Hago click en [Asignar Tarea]
    //Ã¢â‚¬Â¢ Confirmar la  asignaciÃƒÂ³n  de la  tarea  al responsable  e iniciar  su control.
    public void notificarUsuarios(int idTarea, ArrayList<Usuario> usuarios) {
        for (Tarea tareaa : tareas) {
            if (tareaa.getIdTarea() == idTarea) {
                tareaa.setNotificacion(usuarios);
            }
        }
    }

    //Hago click en[Eliminar] en la secciÃƒÂ³n Notificar  a lo siguientes usuarios
    //Ã¢â‚¬Â¢ Eliminar los usuarios  seleccionados de la grilla correspondiente.
    public void eliminaUsuarioNotificacion(int idTarea, Usuario usuario) {
        //Busco la Tarea en el ArrayList
        for (Tarea tareaa : tareas) {
            if (tareaa.getIdTarea() == idTarea) {
                //Busco en el ArrayList de Usuarios a notificar
                for (Usuario user : tareaa.getNotificacion()) {
                    if (user.getIdUsuario() == usuario.getIdUsuario()) {
                        tareaa.getNotificacion().remove(usuario);
                    }
                }
            }
        }
    }

    //Cantidad de usuarios asignados a una tarea
    public int UsuariosporTarea(int idTarea) {
        for (Tarea tareaa : tareas) {
            if (tareaa.getIdTarea() == idTarea) {
                return tareaa.getNotificacion().size();
            }
        }
        return 0;
    }

    //Cambiar el estado de la Tarea a Confirmado
    public void ConfirmacionTarea(int idTarea) {
        for (Tarea tareaa : tareas) {
            if (tareaa.getIdTarea() == idTarea) {
                tareaa.setEstado("Confirmado");
            }
        }
    }
}



